package com.billdowney.qq.robot.dayzUtil;

import com.billdowney.qq.robot.bean.Dayz.Jisharizhi;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

//击杀日志解析
public class jisharizhijiexi {

    public static List<Jisharizhi> jiexijisharizhi(String 文件路径) {
        List<Jisharizhi> list = new ArrayList<>();
        File file =new File(文件路径);
        File[] files = file.listFiles();
        for (File f:files){
          if(f.getName().contains("NineKillFeedLogs.log")){
             文件路径+="/"+"NineKillFeedLogs.log";
        try (Scanner sc = new Scanner(new FileReader(文件路径))) {
            while (sc.hasNextLine()) {  //按行读取字符串
                String line = sc.nextLine();//日志解析每一行
                if (文件路径.contains("NineKillFeedLogs.log")) {
                    Jisharizhi jisharizhi = NineKillFeedLogs(line);
                    if (jisharizhi!=null){
                     list.add(jisharizhi);
                    }
                }
            }
        } catch (FileNotFoundException e) {
            return null;
        }
        return list ;
          }
        }
        return list;
    }





    //"Nine  |  2022/10/01  11:05:31  |  [名称:SiGuaChuanMei   编号:76561199245505929   坐标:<3426.015869, 332.832977, 7280.204102> ]  被杀死了,攻击对象: [名称:Baishan   编号:76561199271586932   坐标:<3434.290771, 332.832977, 7284.394531> ]  道具: RPK-16 (Green) 距离:[9m]";
    static Jisharizhi NineKillFeedLogs(String 击杀每一行){
        if (!击杀每一行.contains("被杀死")){
            return null;
        }
//        "Nine|2022/10/0111:05:31|[名称:SiGuaChuanMei编号:76561199245505929坐标:<3426.015869,332.832977,7280.204102>]被杀死了,攻击对象:[名称:Baishan编号:76561199271586932坐标:<3434.290771,332.832977,7284.394531>]道具:RPK-16(Green)距离:[9m]"
        String 时间= 击杀每一行.substring(击杀每一行.indexOf("Nine  |  ")+9,击杀每一行.indexOf("|  [")-2);
        时间= 时间.split(" ")[0]+" "+时间.split("  ")[1];
        时间= 时间.replaceAll("/","-");
        if (!判断是否是一分钟(时间)){
            return null;
        }
        String 被杀人员= 击杀每一行.substring(击杀每一行.indexOf("名称:")+3,击杀每一行.indexOf("编号")); //获取时间
        String 被杀人员坐标= 击杀每一行.substring(击杀每一行.indexOf("坐标:")+3,击杀每一行.indexOf("> ]")+1); //获取时间
        String 攻击者= 击杀每一行.substring(击杀每一行.lastIndexOf("名称:")+3,击杀每一行.lastIndexOf("编号")); //获取时间
        String 攻击者id= 击杀每一行.substring(击杀每一行.lastIndexOf("编号:")+3,击杀每一行.lastIndexOf("坐标")-3); //获取时间
        String 攻击者坐标= 击杀每一行.substring(击杀每一行.lastIndexOf("坐标:")+3,击杀每一行.lastIndexOf("> ]")+1); //获取时间
        String 武器= 击杀每一行.substring(击杀每一行.indexOf("道具:")+3,击杀每一行.indexOf("距离")); //获取时间
        String 击杀距离= 击杀每一行.substring(击杀每一行.indexOf("距离:[")+4,击杀每一行.length()-2); //获取时间
        Jisharizhi map = new Jisharizhi();
        map.setJishashijian(时间);
        map.setBeisharenyuan(被杀人员);
        map.setGongjizhe(攻击者);
        map.setWuqi(武器);
        map.setJuli(击杀距离);
        map.setSteamid(攻击者id);
        map.setBeishazuobiao(被杀人员坐标);
        map.setGongjizuobiao(攻击者坐标);
        return map;
    }
    static boolean  判断是否是一分钟(String 时间){
        Date parse;
        try {
            parse= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(时间);;
        } catch (ParseException e) {
            return false;
        }
        Date now = new Date();
        long time = 1*70*1000;//30分钟
        Date beforeDate = new Date(now .getTime() - time);//1分钟前的时间
        boolean before = beforeDate.before(parse);
        return before;
    }

}
